# -*- coding: utf-8 -*-
__author__ = 'lztkdr'
__date__ = '2020/4/14 10:26'

import numpy as np
import pandas as pd
# import matplotlib.pyplot as plt
from matplotlib import pyplot as plt

# Pycharm输出窗口有省略号，数据显示不全解决方法
pd.set_option('display.max_rows', 10)
pd.set_option('display.max_columns', 200)
pd.set_option('display.width', 1000)

# 如果要显示中文标题和坐标表示，需要添加以下两行代码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

print('pd.__version__:', pd.__version__)

print('============================================================================================================')
"""
	现在我们有北上广、深圳、和沈阳5个城市空气质量数据，请绘制出5个城市的PM2.5随时间的变化情况

	观察这组数据中的时间结构，并不是字符串，这个时候我们应该怎么办？

	数据来源： https://www.kaggle.com/uciml/pm25-data-for-five-chinese-cities

"""
file_path = './PM2.5/BeijingPM20100101_20151231.csv'
df = pd.read_csv(file_path)
print(df.head())
print("==============================================================")
print(df.info())
print("==============================================================")
# 把分开的时间字符串通过periodIndex的方法转化为pandas的 时期（时间区间）类型
period = pd.PeriodIndex(year=df.year, month=df.month, day=df.day, hour=df.hour, freq='H')
print(type(period))
print(period)
print("==============================================================")
# 增加datetime新列，把分开的时间列，转成新的时间列
df['datetime'] = period
print(df.head())
print("==============================================================")
df.set_index('datetime', inplace=True)
# df.set_index(df.datetime,inplace=True)
print(df.head())
print('============================================================================================================')
# 请绘制出5个城市的PM2.5随时间的变化情况
print(df["PM_US Post"])
print("=============================")
# data = df["PM_US Post"].dropna()
# print(data)
# x = data.index
# y = data.values
# plt.figure(figsize=(20, 8), dpi=80)
# plt.plot(range(len(x)), y)14_pm_2_5.py:61
# plt.xticks(range(0, len(x), 200), list(x)[::200])
# plt.show()

# 降采样，每月里的缺失值，使用平均值
df = df.resample('M').mean()
print(df)

# 上面已经使用月份均值填充缺失值，这里不用再 dropna
# data = df["PM_US Post"].dropna()
print("=================")
data = df["PM_US Post"]
print(data)
x = data.index
y = data.values
plt.figure(figsize=(20, 8), dpi=80)
plt.plot(range(len(x)), y)
plt.xticks(range(0, len(x), 3), list(x)[::3],rotation=45)
plt.show()
print("=============================")


